ARM架构安装Kubernetes集群 您所在的位置:网站首页 centos8安装k8s125 arm ARM架构安装Kubernetes集群

ARM架构安装Kubernetes集群

#ARM架构安装Kubernetes集群| 来源: 网络整理| 查看: 265

背景 类型 版本 操作系统 CentOS Linux release 7.6.1810 (AltArch) 内核 Linux master 4.18.0-80.7.2.el7.aarch64 硬件配置 8核16G内存 * 2台 计算机名 master、node1 K8S版本 1.14.2 计算机名 公网IP 私网IP master 116.63.180.97 192.168.0.113 node1 116.63.177.54 192.168.0.226

说明:

搭建K8s集群,每台节点均需要按照文档安装Docker及K8s的全部组件。 为验证集群搭建功能,至少需要两个节点。如果要验证亲和性调度功能,至少需要三台节点,安装配置工作在每台节点都需要执行。 Master为集群管理节点,node1为集群计算节点。 一、配置华为云yum源 1.1 配置华为云yum源。

2021/11/25 华为云镜像仓库BUG,将ARM镜像全部删除了,大家可以配置阿里云

阿里云源 cat /proc/sys/net/bridge/bridge-nf-call-iptables命令将其置为1(vim不可修改此文件)。

执行该操作时,建议排查是否有配置代理(执行env查看),避免kubeadm init初始化超时失败,删除代理的操作: export -n http_proxy export -n https_proxy export -n no_proxy --pod-network-cidr > 选项用于指定kubernetes网络可以使用的IP地址段,由于后续使用Flannel网络插件,该插件固定使用的IP段为:10.244.0.0/16 。

3.2.2 配置集群 mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config export KUBECONFIG=/etc/kubernetes/admin.conf 3.2.3 在主节点查看集群节点信息。 kubectl get node [root@master aarch64]# kubectl get nodes NAME STATUS ROLES AGE VERSION master NotReady master 97s v1.14.2

需要安装Flannel后状态才能变成Ready

3.2.4 保存主节点生成的加入集群信息。

该信息在成功初始化主节点后生成并打印,集群信息如下所示,如果是集群就先保存以下信息:

kubeadm join 192.168.0.113:6443 --token all7y6.hxs2yemaucku9dct \ --discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821

注意: 该token命令可以用于二十四小时内计算节点加入集群,若token超时,可在K8S主节点通过kubeadm token create --print-join-command命令进行重新生成

3.3 配置计算点(node1) 3.3.1 计算节点加入集群

计算节点执行

kubeadm join 192.168.0.113:6443 --token all7y6.hxs2yemaucku9dct \ --discovery-token-ca-cert-hash sha256:7e1b11d2715fd87d8aeec9a1924c87b68d36da35392ccee57b0581993dfeb821

3.3.2 等待1分钟后,在主节点(master)执行kubectl get nodes [root@master opt]# kubectl get nodes NAME STATUS ROLES AGE VERSION master Ready master 3h7m v1.14.2 node1 NotReady 83s v1.14.2 3.3.3 在主节点和计算节点上查看kubelet服务状态 systemctl status kubelet

主节点

子节点

3.4 添加Flannel网络插件 3.4.1 在主节点上执行如下命令安装Flannel网络插件。

当前版本1.14版本执行(如果无法下载,可以查看网盘附件进行本地化安装,下载地址:https://pan.baidu.com/s/1L1epcWiEI7v2C4bHo2nx3Q 提取码:1fsh)

kubectl apply -f https://gitee.com/mirrors/flannel/blob/master/Documentation/kube-flannel-old.yaml

注意:对于 Kubernetes 版本 v1.17+

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml 3.4.2 安装完成后,执行kubectl get pod -n kube-system,看到kube-flannel正常运行即可 [root@master opt]# kubectl get pod -n kube-system NAME READY STATUS RESTARTS AGE coredns-fb8b8dccf-sgzqj 1/1 Running 0 38m coredns-fb8b8dccf-xpx5x 1/1 Running 0 38m etcd-master 1/1 Running 0 37m kube-apiserver-master 1/1 Running 0 37m kube-controller-manager-master 1/1 Running 0 37m kube-flannel-ds-arm64-wxc6f 1/1 Running 0 98s kube-proxy-tzb4r 1/1 Running 0 38m kube-scheduler-master 1/1 Running 0 37m

这样我们K8S集群就搭建完成了。

四、(选配)安装Kubernetes Dashboard插件

主节点上操作即可

4.1 用openssl生成自签证书(有第三方证书可跳过)

生成证书请求的key

openssl genrsa -out dashboard.key 2048

生成证书请求

openssl req -new -out dashboard.csr -key dashboard.key -subj '/CN='

换成自己的ip或域名。

生成自签证书

openssl x509 -days 3650 -req -in dashboard.csr -signkey dashboard.key -out dashboard.crt

这里指定了过期时间3650天,默认365天

4.2 部署Dashboard插件 4.2.1 创建部署kubernetes-dashboard的yaml文件

(文件下载地址:链接:https://pan.baidu.com/s/1L1epcWiEI7v2C4bHo2nx3Q 提取码:1fsh)

根据官方文件做了微调:

把cert注释掉,使用待会自己创建的cert,因为默认的证书有问题; 把dashboard访问方式改为NodePort,端口是31234,访问时用pod所在主机的ip加端口号即可访问; imagePullPolicy改为IfNotPresent,当本地找不到镜像时才从网上拉取; 注意查看镜像路径是否有效,如果无效,自行百度查找镜像源,或者到别的地方把镜像下载到本地,然后把tag改成和yaml文件中的image一致 arm镜像源修改kubernetesui/metrics-scraper-arm64:v1.0.6和kubernetesui/dashboard-arm64:v2.0.5 4.2.2 部署kubernetes-dashboard kubectl apply -f /opt/kubernetes-dashboard.yaml 4.2.3 部署完成后还是不能访问,因为yaml文件中注释掉了kubernetes-dashboard-certs,相关的pod没跑起来,所以此时应创建certs kubectl create secret generic kubernetes-dashboard-certs --from-file=/opt/dashboard.key --from-file=/opt/dashboard.crt -n kubernetes-dashboard 4.2.4 如果失败检查方式

一般经过以上步骤就可以访问dashboard,可以跳过这一步了,但如果此时仍不能访问,pod不是处于"running"状态,可以删除kubenetes-dashboard相关的pod,让kubelet自动生成一个新的可运行的pod 查看kubernetes-dashboard的pod名

kubectl get pods -n kubernetes-dashboard

删除该pod:

kubectl delete pod -n kubernetes-dashboard

正确结果

[root@master /]# kubectl get pod -n kubernetes-dashboard NAME READY STATUS RESTARTS AGE dashboard-metrics-scraper-57c8667f5c-92fls 1/1 Running 0 5h9m kubernetes-dashboard-69d48fd659-bw7zb 1/1 Running 0 5h9m 4.3 创建访问用户,用于访问dashboard的Service Account kubectl create serviceaccount admin-user -n kubernetes-dashboard 4.4 为用户绑定角色,创建ClusterRoleBinding kubectl create clusterrolebinding admin-user --clusterrole=cluster-admin --serviceaccount=kubernetes-dashboard:admin-user 4.5 获取登录密钥 kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}')

复制生成的token值即可

[root@master opt]# kubectl -n kubernetes-dashboard describe secret $(kubectl -n kubernetes-dashboard get secret | grep admin-user | awk '{print $1}') Name: admin-user-token-64tjt Namespace: kubernetes-dashboard Labels: Annotations: kubernetes.io/service-account.name: admin-user kubernetes.io/service-account.uid: c882f015-39ca-11eb-9396-fa163ec97a54 Type: kubernetes.io/service-account-token Data ==== ca.crt: 1025 bytes namespace: 20 bytes token: eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlcm5ldGVzLWRhc2hib2FyZCIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi11c2VyLXRva2VuLTY0dGp0Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6ImFkbWluLXVzZXIiLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlcnZpY2UtYWNjb3VudC51aWQiOiJjODgyZjAxNS0zOWNhLTExZWItOTM5Ni1mYTE2M2VjOTdhNTQiLCJzdWIiOiJzeXN0ZW06c2VydmljZWFjY291bnQ6a3ViZXJuZXRlcy1kYXNoYm9hcmQ6YWRtaW4tdXNlciJ9.nK8gspJ8DAMzrOesHC-CGvjaYKAtahUCB9L1eQTbaeCXv-8ZT-8HVBzzCTk20XnAG30yPwOD80x_MBCksSgaw7QkImNlZVcNM3JXmaNvxFTObeg9aY_Lgdbs7r4hfAMKZd2wi1G3BaNbfAWnWxlecbOXTMYBL5PI6h5oJSuR6Fgm0IEdRT6diI_uaoan-Mqmvm_VKvj6tMl1xTqczTgnp0Hv5kwJvT0lOYx13nhjix-hfo0B2UaSGDnLcyFLrzAIOfKuAlFQMwcJndgs7hz_x7CM-UpfOvCg4oVrWkHAlspOfxRVflHXjfexUGnjGq2Rywph5h4godbTPwhLwJ4tcg 4.6 登录验证

访问我们master地址,通过浏览器访问https://IP:31234,点击继续访问

输入token值

即可看到kubernetes-dashboard UI界面

UI查看节点信息

五、卸载K8S组件

注意: 下列步骤仅仅指导用户如何手动卸载K8s组件,请勿在正常的部署过程中执行。

清空K8s集群设置。 在卸载K8s组件前,先执行kubeadm reset命令,清空K8s集群设置。

卸载管理组件。

yum erase -y kubelet kubectl kubeadm kubernetes-cni

删除基础组件镜像。 基础组件通过Docker镜像部署,因此只需要强制删除对应镜像即可卸载。

docker rmi -f k8s.gcr.io/kube-apiserver:v1.15.1 docker rmi -f k8s.gcr.io/kube-controller-manager:v1.15.1 docker rmi -f k8s.gcr.io/kube-scheduler:v1.15.1 docker rmi -f k8s.gcr.io/kube-proxy:v1.15.1 docker rmi -f k8s.gcr.io/pause:3.1 docker rmi -f k8s.gcr.io/etcd:3.3.10 docker rmi -f k8s.gcr.io/coredns:1.3.1 六、常见问题 6.1 只有一台机器,一个master节点,没有node节点,创建pod失败 0/1 nodes are available: 1 node(s) had taints that the pod didn't tolerate.

答:是因为默认kubernetes默认不让pod部署到master节点,但是我在测试环境只有一个节点也是master节点,需要允许master节点部署pod

kubectl taint nodes --all node-role.kubernetes.io/master-

如果想要禁止,则执行以下命令

kubectl taint nodes k8s node-role.kubernetes.io/master=true:NoSchedule 6.2 部署好matser节点后,查看状态是noReady状态

答:需要安装Flannel后状态才能变成Ready (转发请注明出处:http://www.cnblogs.com/zhangyongli2011/ 如发现有错,请留言,谢谢)



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有